#ifndef TABLEVIEWDIALOG_H
#define TABLEVIEWDIALOG_H

#include <QDialog>
#include <qmodeldatareport.h>
#include <QAbstractTableModel>
#include <QAbstractItemDelegate>
#include <QDebug>

namespace Ui {
class TableViewDialog;
}

class TableViewDialog : public QDialog
{
    Q_OBJECT

public:
    explicit TableViewDialog(QAbstractTableModel *m, bool zero = true, QWidget *parent = 0);
    ~TableViewDialog();

    void setTitle(QString s);
    void setHeaderLeft(QString s);
    void setHeaderCenter(QString s);
    void setHeaderRight(QString s);
    void setHeaderText(QString s);
    void setFooterLeft(QString s);
    void setFooterRight(QString s);
    void setFooterText(QString s);

    void setTableFormat(const QList<QModelDataReport::dataFormat> &l);
    void setAlignment(const QList<int> &l);
    void setListofWidth(const QList<int> &l);
    void setListofHeaders(const QStringList &l);

    void setModel(QAbstractTableModel *m);
    void hideColumn(int c);
    void totalColumn(int c);

    void setDelegateForColumn(int i, QAbstractItemDelegate *d);

    // Retrourne les formats
    QModelDataReport::dataFormat dformatstring();
    QModelDataReport::dataFormat dformatdate();
    QModelDataReport::dataFormat dformatdatetime();
    QModelDataReport::dataFormat dformateuro();

signals:
    void filtreDateChanged(const QDate & du,const QDate & au);
    void filtreRechercheChanged(const QString &arg1);

protected:
    void showEvent(QShowEvent * event);

private slots:
    void on_buttonQuitter_clicked();
    void on_buttonImprimer_clicked();
    void totaux();

private:
    Ui::TableViewDialog *ui;

    QAbstractTableModel *model;

    QList<int> listofcolumns;
    QList<int> listofcolumnsTotaux;
    QList<int> listofwidth;
    QStringList listofheader;
    QList<int> alignment;
    QList<QModelDataReport::dataFormat> tableformat;

    QString title;
    QString headerLeft;
    QString headerCenter;
    QString headerRight;
    QString headerText;
    QString footerLeft;
    QString footerRight;
    QString footerText;

    bool afficheZero;


};

#endif // TABLEVIEWDIALOG_H
